This invention relates to bandwidth allocation on loop systems coupling high data rate devices, and, more particularly, to systems coupling a CPU channel to bulk storage devices such as disks and tapes.
Loop systems capable of transmitting data at megabyte per second rates customarily use equal fixed length multibyte frames, each frame being assignable to only one terminal at a time. Also, such systems may have a loop delay or latency greatly exceeding the fixed length frame duration by virtue of the high data rate.
A CPU channel accesses data on DASD storage devices by communicating a series of instructions identifying the record location in terms of disk drive, storage volume, disk(track) and angular position and the reading or writing operation of interest. The instructions termed channel command words are interpreted by a controller common to the disk drives for actually positioning the access mechanism relative to the storage device and executing the read or write operation. Because the availability of the channel and the response times of the storage system to the accessing, reading, and writing of records varies, the coupling between the channel and the DASD is "loose", i.e., transfers are made by way of a demand/response protocol. This means that the status of a device is first ascertained and if it is available, then one data transaction can take place. This minimizes the need for buffering even though the "speeds" of the devices differ.
The coupling of a CPU channel to a plurality of storage devices on a time shared basis via a loop does not change the protocol in principle. It does mean that account must be taken of the special characteristics of loops. For example, loops for use with high data rate storage devices must make provision for disconnecting a terminal which might overrun the system. Alternately, locking out of those terminals which prospectively could overrun the system is desirable. This situation occurs for two reasons. First, bulk storage devices such as disks and tapes lack a start/stop capability on a character basis. In contrast, they transfer data by multiple byte, record, or entire track. Second, for volume transfer, a broad bandwidth (high data rate) is mandatory. In this regard, overruns occur when the available loop bandwidth is less than the aggregate bandwidth of all terminals requesting service.
A loop protocol for coupling the channel and storage devices must provide for sending access commands from the channel, writing of data only to the extent that the receiving device can accommodate the transfer, and allocating bandwidth so as to avoid blocking some loop secondary terminals in favor or others or overrunning of the device. In the prior art, some loop protocols assign a frame/slot to a device on a permanent basis. Consequently, time (bandwidth) is wasted if the slots are not utilized. Where a loop protocol requires the primary terminal to centrally allocate slots, the primary will not be cognizant of the instantaneous data rate variations of devices. This, in turn, requires the primary to transmit assigned frames/slots at a rate higher than the device. This, too, is wasteful because no other device can utilize the excess bandwidth assigned to the overrunning device. Still other loop protocols utilize distributional schemes such as optional response polling. In an ORP system, the overhead frames at the beginning of each cycle together with its variable length place buffering requirements on each device. The number of wasted frames is at least equal to the loop latency during each ORP cycle.
Any loop system time sharing its facilities among different addressable terminals needs a frame format having an address, control, and data portion thereof. The address portion must include the addressee and/or may include an addressor. The control portion is usually reserved for indicating type or mode, i.e., service request, command, write, read, device status and frame status, i.e., available/unavailable, full/empty. The frame format as might be expected implements the demand/response protocol. For example, if the channel wants to write data on a specific storage device, then the storage device must have some way of positively indicating availability and readiness to receive data. This is communicated by means of a status frame. To avoid being overrun, the device sends a "write" request" frame from the secondary to the primary whenever its data buffer has space for one frame of data. In order to allow as small a data buffer as possible, this loop protocol constrains the primary to respond to every write request with a minimum and invariable time delay. The secondary can take advantage of the resulting invariable loop latency by sending its request before it actually needs the data.
Reference is made to Dixon, IBM Technical Disclosure Bulletin, Vol. 15, No. 1, June 1972, pages 335-336 and Spragins, IBM Technical Disclosure Bulletin, Vol. 16, No. 1, June 1973, pages 302-305. These references treat dynamic frame/slot reallocation and consequent bandwidth distribution in terms respectively of slot use/reuse at a loop secondary terminal and the relation between unassigned empty frames generated by a primary terminal and the queue of data (messages) at secondary terminals.
In Dixon, a slot addressed to a particular loop terminal may be seized by that terminal and "reused" by overwriting the address portion of the slot with another address or a special character. The effect of the special character is to create an unassigned slot. Of course, an unassigned slot can be "used" in the first instance by the first terminal desiring to communicate data or request service. Dixon is directed to revising the statistical bias by which upstream terminals have greater access to unassigned frames generated by the primary toward a more nearly uniform access.
In Spragins, messages are transmitted, say, a byte at a time, in individually addressable slots. In this case, the primary terminal generates unassigned time slots as an inverse function of the average number of messages per time slot as a parameter. If the average were 0.1, then the primary would insert an unassigned slot after ten addressed slots had been sent. If the average was 0.5, then the primary would alternate the sending of assigned and unassigned slots.
For purposes of completeness, reference should also be made to Deutsch et al, U.S. Pat. No. 3,639,694, "Time Division Multiplex Communications System" issuing on Feb. 1, 1972; and Arulpragasam, U.S. Pat. No. 3,739,904, "Data Communication System of Loop Configuration and Serial Transmission of Time Slots," issuing on Feb. 1, 1972. These references describe systems designed for slow loop transmission rates and low speed terminals in which no consideration is given to the buffering requirements of overrunable devices on the loop whose data rates are comparable to the loop latency.
Deutsch et al sets up an entire sequence of N frames (channels) where one or more frames are assigned to each of the active terminals on a loop. At least one of the frames in the sequence is unassigned and can be used by inactive terminals so as to request bandwidth. Significantly, for the duration of one assignment set, there are no adjustments of bandwidth occupancy based on demand for bandwidth or the lack of it by the active terminals on a one-for-one basis.
The Arulpragasam patent uses a protocal similar to that of Deutsch, but without the fixed sequence of frames. In Arulpragasam, in order to transmit a message, a terminal must send a request for service in the first free time slot. It cannot, however, send the message until it receives a "proceed" signal from the central station. The fastest that any terminal can transmit is the time it takes to make two journeys around the loop. The central station in the Arulpragasam system is not constrained to answer the bandwidth request in the next outgoing frame.
Lastly, attention is directed to Gindi, U.S. Pat. No. 4,042,783, "Method and Apparatus for Byte and Frame Synchronization on a Loop System Coupling a CPU Channel to Bulk Storage Devices," issuing on Aug. 16, 1977. This reference teaches means for synchronizing frame delimited bit stream messages on a high speed loop for communication between bulk storage devices attaching loop secondary terminals on one hand and a CPU/channel attaching the loop primary terminal on the other hand. Also disclosed, is the improvement of transmission efficiency by the logical assignment for loop attachment only those loop secondary terminals whose storage elements have an aggregate bandwidth less than the available instantaneous loop bandwidth.